package com.shycloud.mido.homework.api.vo;

import com.shycloud.mido.homework.api.entity.WeekDataMember;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Objects;
import lombok.Data;

@Data
@ApiModel("周报周作业完成情况VO")
public class WeekDataHomeworkVO implements Serializable {

	/** 本周的作业完成总数 */
	@ApiModelProperty("本周的作业完成总数")
	private Integer homeworkDoneCount;
	/** 本周的作业完成总数 */
	@ApiModelProperty("本周的作业完成总数排名")
	private Integer homeworkDoneCountRank;
	/** 本周作业完成总人数 */
	@ApiModelProperty("本周作业完成总人数")
	private Integer homeworkAllCount;
	/** 超过全网的百分数 */
	@ApiModelProperty("超过全网的百分数")
	private BigDecimal overRate;
	/** 本周的作业完成率 */
	@ApiModelProperty("本周的作业完成率")
	private BigDecimal homeworkDoneRate;
	/** 上周的作业完成率 */
	@ApiModelProperty("上周的作业完成率")
	private BigDecimal preHomeworkDoneRate;
	/** 本周的作业完成情况 */
	@ApiModelProperty("本周的作业完成情况")
	private WeekDataMember thisWeekHomeworkDetail;
	/** 比较的作业完成情况 */
	@ApiModelProperty("比较的作业完成情况")
	private WeekDataMember compareWeekHomeworkDetail;

	public BigDecimal getOverRate() {

		//新增判断，如果完成数量等于0时，直接返回 0
		if (this.getHomeworkDoneCount() == 0) {
			return new BigDecimal(0);
		}

		if (this.homeworkDoneCountRank == 1) {
			return new BigDecimal(100);
		} else if (Objects.equals(this.homeworkDoneCountRank, this.homeworkAllCount)) {
			return new BigDecimal(0);
		} else {
			return new BigDecimal(this.homeworkAllCount - this.homeworkDoneCountRank)
					.divide(new BigDecimal(this.homeworkAllCount), 3, BigDecimal.ROUND_HALF_UP)
					.multiply(new BigDecimal(100));
		}
	}

}
